package com.hupu.jrs.injector.component

import android.app.NotificationManager
import android.content.Context
import com.hupu.jrs.MyApplication
import com.hupu.jrs.api.forum.ForumApi
import com.hupu.jrs.api.game.GameApi
import com.hupu.jrs.components.okhttp.OkHttpHelper
import com.hupu.jrs.components.storage.UserStorage
import com.hupu.jrs.db.*
import com.hupu.jrs.injector.module.ApiModule
import com.hupu.jrs.injector.module.ApplicationModule
import com.hupu.jrs.injector.module.DBModule
import com.hupu.jrs.ui.BaseActivity
import com.hupu.jrs.widget.HuPuWebView
import com.squareup.otto.Bus
import dagger.Component
import javax.inject.Singleton

/**
 * Created by sll on 2016/3/8.
 */
@Singleton
@Component(modules = arrayOf(ApplicationModule::class, ApiModule::class, DBModule::class))
interface ApplicationComponent {

    val context: Context

    val bus: Bus

    val forumApi: ForumApi

    val gameApi: GameApi


    val userDao: UserDao

    val forumDao: ForumDao

    val threadDao: ThreadDao

    val threadInfoDao: ThreadInfoDao

    val threadReplyDao: ThreadReplyDao

    val readThreadDao: ReadThreadDao

    val imageCacheDao: ImageCacheDao

    val okHttpHelper: OkHttpHelper


    val userStorage: UserStorage

    val notificationManager: NotificationManager

    fun inject(mApplication: MyApplication)

    fun inject(mBaseActivity: BaseActivity)

    fun inject(mHupuWebView: HuPuWebView)
}
